package com.reportgenerate.marketreport.service;

import com.reportgenerate.marketreport.entity.model.Customer;
import com.reportgenerate.marketreport.entity.model.CustomerExample;
import com.reportgenerate.marketreport.exception.SaveObjectException;
import org.apache.ibatis.session.RowBounds;
import org.springframework.transaction.annotation.Transactional;

import java.util.HashMap;
import java.util.List;

/**
 * @program: reportgenerate
 * @Description: 业务层目录，客户信息服务接口层
 * @author: Mr.Cheng
 * @date: 2023/8/20 16:59
 */
public interface CustomerService {

    /**
    * @Description: 获取客户信息
    * @Param: []
    * @return: java.lang.String
    * @Author: Mr.Cheng
    * @Email: ccelephant_518@126.com
    * @Date: 2023/8/20 17:02
    */
    public List<Customer> getCustomerInformationList();

    /**
    * @Description: 获取客户信息分页
    * @Param: []
    * @return: java.lang.String
    * @Author: Mr.Cheng
    * @Email: ccelephant_518@126.com
    * @Date: 2023/8/20 17:04
    */
    public HashMap getCustomerInformationListByPage(CustomerExample customerExample, Integer page, Integer size);

    /**
    * @Description: 插入客户信息
    * @Param: [customer]
    * @return: int
    * @Author: Mr.Cheng
    * @Email: ccelephant_518@126.com
    * @Date: 2023/8/20 20:06
    */
    public int insertCustomerInformation(Customer customer);

    /**
    * @Description: 删除客户信息
    * @Param: [id]
    * @return: int
    * @Author: Mr.Cheng
    * @Email: ccelephant_518@126.com
    * @Date: 2023/8/20 20:08
    */
    public int deleteCustomerInformationById(String id);

    /**
    * @Description: 根据客户id获取客户信息
    * @Param: [id]
    * @return: com.reportgenerate.marketreport.entity.model.Customer
    * @Author: Mr.Cheng
    * @Email: ccelephant_518@126.com
    * @Date: 2023/8/20 20:11
    */
    public Customer getCustomerInformationById(String id);

    /**
     * @Description: 更新客户信息
     * @Param: [customer]
     * @return: int
     * @Author: Mr.Cheng
     * @Email: ccelephant_518@126.com
     * @Date: 2023/8/21 21:34
     */
    public int updateCustomerInformation(Customer customer);
}
